#ifndef __TRIPLEDESECBVARKEY__
#define __TRIPLEDESECBVARKEY__

#include "../plainkeycipher.h"

// Test vectors from <http://csrc.nist.gov/groups/STM/cavp/documents/des/KAT_TDES.zip>

static const std::vector <PlainKeyCipher> TDES_VARKEY = {
    std::make_tuple("0000000000000000", "8001010101010101", "95a8d72813daa94d"),
    std::make_tuple("0000000000000000", "4001010101010101", "0eec1487dd8c26d5"),
    std::make_tuple("0000000000000000", "2001010101010101", "7ad16ffb79c45926"),
    std::make_tuple("0000000000000000", "1001010101010101", "d3746294ca6a6cf3"),
    std::make_tuple("0000000000000000", "0801010101010101", "809f5f873c1fd761"),
    std::make_tuple("0000000000000000", "0401010101010101", "c02faffec989d1fc"),
    std::make_tuple("0000000000000000", "0201010101010101", "4615aa1d33e72f10"),
    std::make_tuple("0000000000000000", "0180010101010101", "2055123350c00858"),
    std::make_tuple("0000000000000000", "0140010101010101", "df3b99d6577397c8"),
    std::make_tuple("0000000000000000", "0120010101010101", "31fe17369b5288c9"),
    std::make_tuple("0000000000000000", "0110010101010101", "dfdd3cc64dae1642"),
    std::make_tuple("0000000000000000", "0108010101010101", "178c83ce2b399d94"),
    std::make_tuple("0000000000000000", "0104010101010101", "50f636324a9b7f80"),
    std::make_tuple("0000000000000000", "0102010101010101", "a8468ee3bc18f06d"),
    std::make_tuple("0000000000000000", "0101800101010101", "a2dc9e92fd3cde92"),
    std::make_tuple("0000000000000000", "0101400101010101", "cac09f797d031287"),
    std::make_tuple("0000000000000000", "0101200101010101", "90ba680b22aeb525"),
    std::make_tuple("0000000000000000", "0101100101010101", "ce7a24f350e280b6"),
    std::make_tuple("0000000000000000", "0101080101010101", "882bff0aa01a0b87"),
    std::make_tuple("0000000000000000", "0101040101010101", "25610288924511c2"),
    std::make_tuple("0000000000000000", "0101020101010101", "c71516c29c75d170"),
    std::make_tuple("0000000000000000", "0101018001010101", "5199c29a52c9f059"),
    std::make_tuple("0000000000000000", "0101014001010101", "c22f0a294a71f29f"),
    std::make_tuple("0000000000000000", "0101012001010101", "ee371483714c02ea"),
    std::make_tuple("0000000000000000", "0101011001010101", "a81fbd448f9e522f"),
    std::make_tuple("0000000000000000", "0101010801010101", "4f644c92e192dfed"),
    std::make_tuple("0000000000000000", "0101010401010101", "1afa9a66a6df92ae"),
    std::make_tuple("0000000000000000", "0101010201010101", "b3c1cc715cb879d8"),
    std::make_tuple("0000000000000000", "0101010180010101", "19d032e64ab0bd8b"),
    std::make_tuple("0000000000000000", "0101010140010101", "3cfaa7a7dc8720dc"),
    std::make_tuple("0000000000000000", "0101010120010101", "b7265f7f447ac6f3"),
    std::make_tuple("0000000000000000", "0101010110010101", "9db73b3c0d163f54"),
    std::make_tuple("0000000000000000", "0101010108010101", "8181b65babf4a975"),
    std::make_tuple("0000000000000000", "0101010104010101", "93c9b64042eaa240"),
    std::make_tuple("0000000000000000", "0101010102010101", "5570530829705592"),
    std::make_tuple("0000000000000000", "0101010101800101", "8638809e878787a0"),
    std::make_tuple("0000000000000000", "0101010101400101", "41b9a79af79ac208"),
    std::make_tuple("0000000000000000", "0101010101200101", "7a9be42f2009a892"),
    std::make_tuple("0000000000000000", "0101010101100101", "29038d56ba6d2745"),
    std::make_tuple("0000000000000000", "0101010101080101", "5495c6abf1e5df51"),
    std::make_tuple("0000000000000000", "0101010101040101", "ae13dbd561488933"),
    std::make_tuple("0000000000000000", "0101010101020101", "024d1ffa8904e389"),
    std::make_tuple("0000000000000000", "0101010101018001", "d1399712f99bf02e"),
    std::make_tuple("0000000000000000", "0101010101014001", "14c1d7c1cffec79e"),
    std::make_tuple("0000000000000000", "0101010101012001", "1de5279dae3bed6f"),
    std::make_tuple("0000000000000000", "0101010101011001", "e941a33f85501303"),
    std::make_tuple("0000000000000000", "0101010101010801", "da99dbbc9a03f379"),
    std::make_tuple("0000000000000000", "0101010101010401", "b7fc92f91d8e92e9"),
    std::make_tuple("0000000000000000", "0101010101010201", "ae8e5caa3ca04e85"),
    std::make_tuple("0000000000000000", "0101010101010180", "9cc62df43b6eed74"),
    std::make_tuple("0000000000000000", "0101010101010140", "d863dbb5c59a91a0"),
    std::make_tuple("0000000000000000", "0101010101010120", "a1ab2190545b91d7"),
    std::make_tuple("0000000000000000", "0101010101010110", "0875041e64c570f7"),
    std::make_tuple("0000000000000000", "0101010101010108", "5a594528bebef1cc"),
    std::make_tuple("0000000000000000", "0101010101010104", "fcdb3291de21f0c0"),
    std::make_tuple("0000000000000000", "0101010101010102", "869efd7f9f265a09"),
};

#endif // __TRIPLEDESECBVARKEY__
